#每5秒检测一下直播间是否开启，关闭的话就重新开启
#每5秒根据时间向灯具发送控制指令
#晚上23点~早上7点，子灯强制关闭
#早上7点~12点和下午18点~23点，子灯以关闭状态进入非强制转态
import time
import datetime
import socket
import struct
from bilibili_api import live,Credential,sync
#client 发送端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
PORT = 3333
a=[0xff,0x02,0xff]

while 1:
    #控制直播间
    SESSDATA = " "
    BILI_JCT = " "
    BUVID3 = " "
    DEDEUSERID=" "
    try:
        # 实例化 Credential 类
        credential = Credential(sessdata=SESSDATA, bili_jct=BILI_JCT, buvid3=BUVID3,dedeuserid=DEDEUSERID )
        room = live.LiveRoom(22658118, credential)
        mydict=sync(room.get_room_info())
        value=mydict.get('room_info').get('live_status')
        if value == 0:#直播间关闭 于是重新开启
            sync(room.start(area_id=369))
            print('stop')
        elif value == 1:#直播间已开 无需重新开启
            print('live')
    except:
        time.sleep(5)
        print('err')
    time.sleep(5)
    # 控制主灯
    if datetime.datetime.now().hour>=23 or datetime.datetime.now().hour<7:#23~7点 每5秒关一下主灯 
        a[0]=0xff
        a[1]=0x02
        a[2]=0x45#很暗的月光模式 
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00
    elif datetime.datetime.now().hour>=12 and datetime.datetime.now().hour<18:#12~18点 每5秒开一下主灯 下午持续高亮
        a[0]=0xff
        a[1]=0x02
        a[2]=0xff#完全打开
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00
    else:#其他时间 每5秒把主灯切换到微微亮
        a[0]=0xff
        a[1]=0x02
        a[2]=0x46#微微亮
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00
     # 控制子灯
    if datetime.datetime.now().hour>=23 or datetime.datetime.now().hour<7:#23~7点 每5秒关一下子灯 
        a[0]=0xff
        a[1]=0x03
        a[2]=0x40#子灯关闭 
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00
    elif datetime.datetime.now().hour>=12 and datetime.datetime.now().hour<17:#12~17点 每5秒开一下子灯 
        a[0]=0xff
        a[1]=0x03
        a[2]=0xff#子灯完全打开
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00
    elif datetime.datetime.now().hour>=17 and datetime.datetime.now().hour<18:#17~18点 每5秒关一下子灯 
        a[0]=0xff
        a[1]=0x03
        a[2]=0x40#子灯关闭 
        date=struct.pack("%dB"%(len(a)),*a)
        server_address = ("192.168.31.101", PORT)  # 接收方 服务器的ip地址和端口号
        client_socket.sendto(date, server_address) #将msg内容发送给指定接收方
        a[1]=0x00

